package controlador;

import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.catalina.Session;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import modelo.Articulo;
import modelo.ArticuloDAO;

public class CommandGuardarArticulo extends FrontCommand {
	private ArticuloDAO articuloDAO;
	
	
	 public CommandGuardarArticulo() {        
		 	articuloDAO = new ArticuloDAO();
	}


	@Override
	public void process() throws Exception {
		
		FileItemFactory factory = new DiskFileItemFactory();
		ServletFileUpload upload = new ServletFileUpload(factory);
		
		// req es la HttpServletRequest que recibimos del formulario.
		// Los items obtenidos serán cada uno de los campos del formulario,
		// tanto campos normales como ficheros subidos.
		
			List items =  upload.parseRequest(request);
			Articulo articulo = new Articulo();
		
		
		 try {
//			 if (request.getParameter("codigo").equals("") || 
//						request.getParameter("nombre").equals("")||
//						request.getParameter("categoria").equals("")|| 
//						request.getParameter("precio").equals("") ||
//						request.getParameter("existencia").equals("") ||
//						request.getParameter("costo").equals("") ||
//						request.getParameter("imagen").equals(""))	
//					//Deben estar todos los campos llenos para poder incluir el estudiante Solo es por si pasa de largo y llega aqui :P
//					response.sendRedirect("vista/paginamensaje.jsp?mensaje=Debe llenar todos los campos para poder registrar un artículo");
//				else
//				{	
//					
//					
//					Articulo articulo = new Articulo(request.getParameter("codigo"),
//							request.getParameter("nombre"),
//							request.getParameter("categoria"),
//							 Double.valueOf(request.getParameter("costo")),
//							 Double.valueOf(request.getParameter("precio")),
//							 Double.valueOf(request.getParameter("existencia")),"imagenes/"+
//							 request.getParameter("imagen"));
//					
//					// Se puede general la ventana emergente para que automaticaente aparezca la verificacion que se registro!!
//					articuloDAO.registrarArticulo(articulo);
//					
//		
//				
//					request.getSession().setAttribute("articulo",articulo);
//					response.sendRedirect("vista/mostrararticuloregistrado.jsp");
//					//forward("/vista/mostrararticuloregistrado.jsp");
//				}	 
			 
			 
				// Se recorren todos los items, que son de tipo FileItem
				for (Object item : items) {
				   FileItem uploaded = (FileItem) item;

				   // Hay que comprobar si es un campo de formulario. Si no lo es, se guarda el fichero
				   // subido donde nos interese
				   if (!uploaded.isFormField()) {
				      
					   // No es campo de formulario, guardamos el fichero en algún sitio
				      /*cual sera la ruta al archivo en el servidor*/
		              File archivo_server = new File("C:/Documents and Settings/Usuario/Mis documentos/workspace/"+request.getContextPath()+"/WebContent/imagenes/"+ uploaded.getName());
		             //\home\gerana\Escritorio\Ejemplos\EjercicioEjemploModificarEstudiantes\WebContent\fotos\Penguins.jpg
		              // C:\Documents and Settings\Usuario\Mis documentos\workspace\EjercicioEjemploModificarEstudiantes
		              
		              /*y lo guardanmos en el servidor*/
		              uploaded.write(archivo_server);
		              
		              //SE GUARDA LA RUTA DE LA IMAGEN EN EL OBJETO ESTUDIANTE; PARA LUEGO GUARDARLO EN LA BD
		            //  estudiante.setRutaImagen(uploaded.getName());
		              articulo.setImagen(uploaded.getName());
				      
				   } else {
				      // es un campo de formulario, podemos obtener clave y valor
					  //nombre del campo = uploaded.getFiledName();
					  //valor del campo = uploaded.getString(); 
				      if  (uploaded.getFieldName().equals("codigo")) articulo.setCodigo(uploaded.getString());
				      if  (uploaded.getFieldName().equals("nombre")) articulo.setNombre(uploaded.getString());
				      if  (uploaded.getFieldName().equals("categoria")) articulo.setCategoria(uploaded.getString());
				      if  (uploaded.getFieldName().equals("precio")) articulo.setPrecio(Float.parseFloat(uploaded.getString()));
				      if  (uploaded.getFieldName().equals("existencia")) articulo.setExistencia(Float.parseFloat(uploaded.getString()));
				      if  (uploaded.getFieldName().equals("costo")) articulo.setCosto(Float.parseFloat(uploaded.getString()));
				     // if  (uploaded.getFieldName().equals("imagen")) articulo.setCosto(Float.parseFloat(uploaded.getString()));
				      if  (uploaded.getFieldName().equals("id")) {
				    	 if (!uploaded.getString().isEmpty()) articulo.setId(Integer.parseInt(uploaded.getString()));
				      }
				    	  
				   }	     
				}
			 
				articuloDAO.registrarArticulo(articulo);
				request.getSession().setAttribute("articulo",articulo);
				response.sendRedirect("vista/mostrararticuloregistrado.jsp");
			 
			 
		 }catch(NullPointerException e){
			 
			 
			 
		 }
		
		
		
	}

	
	
}
